# Taken from: https://stackoverflow.com/a/52136398
# The main point for this is that it'll allow to import libraries as SYSTEM
# So that warnings from libraries will be suppressed
function(target_link_libraries_system target)
    set(options PRIVATE PUBLIC INTERFACE)
    cmake_parse_arguments(TLLS "${options}" "" "" ${ARGN})
    foreach (op ${options})
        if (TLLS_${op})
            set(scope ${op})
        endif ()
    endforeach (op)
    set(libs ${TLLS_UNPARSED_ARGUMENTS})

    foreach (lib ${libs})
        get_target_property(lib_include_dirs ${lib} INTERFACE_INCLUDE_DIRECTORIES)
        if (lib_include_dirs)
            if (scope)
                target_include_directories(${target} SYSTEM ${scope} ${lib_include_dirs})
            else ()
                target_include_directories(${target} SYSTEM PRIVATE ${lib_include_dirs})
            endif ()
        else ()
            message("Warning: ${lib} doesn't set INTERFACE_INCLUDE_DIRECTORIES. No include_directories set.")
        endif ()
        if (scope)
            target_link_libraries(${target} ${scope} ${lib})
        else ()
            target_link_libraries(${target} ${lib})
        endif ()
    endforeach ()
endfunction(target_link_libraries_system)